package br.com.werp.regras.contabilidade.visao.taglib;

import br.com.werp.regras.contabilidade.integracao.FabricaDAO;
import br.com.werp.regras.contabilidade.integracao.LancamentoDAO;
import br.com.werp.regras.geral.GerenciadorErros;
import br.com.werp.regras.geral.util.Html;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.visao.taglib.MasterTag;
import br.com.werp.regras.geral.vos.tabelas.Historico_padrao;

import java.io.IOException;

import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

import javax.servlet.jsp.JspWriter;


/**
 * @author Sobreira
 * Criado em 20/01/2006
 */
public class HistoriocoPadraoTag extends MasterTag {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    /* (non-Javadoc)
     * @see br.com.werp.regras.geral.visao.taglib.MasterTag#otherDoStartTagOperations()
     */
    public void otherDoStartTagOperations() {
        JspWriter out = pageContext.getOut();

        try {
            LancamentoDAO lancamentoDAO = FabricaDAO.getLancamentoDAO();
            String histId = pageContext.getRequest().getParameter("historicoId");

            if (pageContext.getRequest().getAttribute("limpaHistorico") != null) {
                histId = null;
            }

            Map unlockedMap = new HashMap();
            Util.formataParametros(pageContext.getRequest().getParameterMap(),
                unlockedMap);

            Historico_padrao historico_padrao = new Historico_padrao();

            if (Util.zeroOuInt(histId) != 0) {
                historico_padrao.setHspd_id(Util.zeroOuInt(histId));
                historico_padrao = (Historico_padrao) Util.get0(lancamentoDAO.pesquisarHistoricoPadrao(
                            historico_padrao));
            } else {
                out.write("<TEXTAREA NAME='historico'" +
                    " class='baseField' cols=\"40\" rows=\"2\"  >" +
                    "</TEXTAREA>");

                return;
            }

            if (historico_padrao == null) {
                out.write("<TEXTAREA NAME='historico'" +
                    " class='baseField' cols=\"40\" rows=\"2\"  >" +
                    "</TEXTAREA>");

                return;
            }

            StringTokenizer stringTokenizer = new StringTokenizer(historico_padrao.getHdpd_historico());
            int cont = 0;

            while (stringTokenizer.hasMoreTokens()) {
                String token = stringTokenizer.nextToken();

                if (token.indexOf("@") != -1) {
                    String html = Html.inputType("text", 15, 255, "historico",
                            cont, null,
                            ((unlockedMap.get("historico" + cont) == null) ? ""
                                                                           : (String) unlockedMap.get(
                                "historico" + cont)));
                    out.write(token.replaceAll("@", html));
                    cont++;
                } else {
                    out.write(token + " ");
                }
            }
        } catch (Exception e) {
            GerenciadorErros.logarErro(e);

            try {
                out.println("<font color=red>" + e.getMessage() + "</font>");
            } catch (IOException e1) {
                GerenciadorErros.logarErro(e1);
            }
        }
    }
}
